#set(tableComment = table.getComment())
#set(primaryKeyType = table.getPrimaryKey().getPropertySimpleType())
#set(entityClassName = table.buildEntityClassName())
#set(entityVarName = firstCharToLowerCase(entityClassName))
package #(packageConfig.servicePackage);

import #(dtoPk).#(dtoEntity);
import #(queryPk).#(queryEntity);
import #(MapstructPK).#(mapstructEntity);
import com.diaohw.platform.common.obj.page.PageResultVo;
import #(serviceConfig.buildSuperClassImport());
import #(packageConfig.entityPackage).#(table.buildEntityClassName());

import java.util.List;

/**
 * #(table.getComment()) 服务层。
 *
 * @author #(javadocConfig.getAuthor())
 * @since #(javadocConfig.getSince())
 */
public interface #(table.buildServiceClassName()) extends #(serviceConfig.buildSuperClassName())<#(entityClassName)> {

    #(mapstructEntity) INSTANCE = #(mapstructEntity).INSTANCE;
   /**
     * 添加#(tableComment)。
     *
     * @param data #(tableComment)
     * @return {@code true} 添加成功，{@code false} 添加失败
     */
    boolean insert(#(dtoEntity) data);

    /**
     * 根据主键删除#(tableComment)。
     *
     * @param id 主键
     * @return {@code true} 删除成功，{@code false} 删除失败
     */
    boolean delete(#(primaryKeyType) id);

    /**
     * 根据主键更新#(tableComment)。
     *
     * @param data #(tableComment)
     * @return {@code true} 更新成功，{@code false} 更新失败
     */
    boolean update(#(primaryKeyType) id, #(dtoEntity) data);

    /**
     * 查询所有#(tableComment)。
     *
	 * @param query 查询数据
     * @return 所有数据
     */
    List<#(dtoEntity)> list(#(queryEntity) query);
    /**
     * 根据#(tableComment)主键获取详细信息。
     *
     * @param id #(tableComment)主键
     * @return #(tableComment)详情
     */
    #(dtoEntity) detail(#(primaryKeyType) id);

    /**
     * 分页查询#(tableComment)。
     *
     * @param query 分页查询数据
     * @return 分页对象
     */
    PageResultVo<#(dtoEntity)> page(#(queryEntity) query);

}
